package net.sahv.bdyz.controller.admin;

import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSON;

import net.sahv.bdyz.model.Fabric;
import net.sahv.bdyz.model.FabricFilter;
import net.sahv.bdyz.model.FabricMorepic;
import net.sahv.bdyz.model.FabricPic;
import net.sahv.bdyz.service.FabricFilterService;
import net.sahv.bdyz.service.FabricPicService;
import net.sahv.bdyz.service.FabricService;
import net.sahv.bdyz.util.PagingUtil;

/**
 * @author 作者 : 任凯伟
 * @date 创建时间：2016年8月8日 上午9:13:05
 * @version 1.0
 * @see 面料管理
 */
@Controller("adminFabricController")
@RequestMapping("admin/fabric")
public class FabricController {
	@Autowired
	private FabricService fabricService;
	@Autowired
	private FabricFilterService fabricFilterService;
	@Autowired
	private FabricPicService fabricPicService;

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月8日 上午9:31:52
	 * @version 1.0
	 * @see 面料首页
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@RequestMapping(value="/index",method=RequestMethod.GET)
	public String index() {
		return "admin/fabric/list";
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月8日 上午9:32:43
	 * @version 1.0
	 * @see 异步获取面料列表数据
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/list",method=RequestMethod.POST)
	public JSON getList(PagingUtil pagingUtil, HttpServletRequest request, Model model) {
		String fName = request.getParameter("F_NAME");// 名称
		String fType = request.getParameter("F_TYPE");// 类别
		String fNo = request.getParameter("F_NO");// 编号
		String sortField = " order by f.F_CREATE_TIME desc";
		String where = " where f.F_IS_DELETE=0";
		if (fName != null && fName != "") {
			where += " and f.F_NAME like '%" + fName + "%'";
		}
		if (fType != null && fType != "") {
			where += " and f.F_TYPE=" + fType;
		}
		if (fNo != null && fNo != "") {
			where += " and f.F_NO like '%" + fNo + "%'";
		}
		Map<String, Object> param = new HashMap<String, Object>();

		param.put("start", pagingUtil.getiDisplayStart());
		param.put("length", pagingUtil.getiDisplayLength());
		param.put("where", where);
		param.put("sortField", sortField);

		List<Map<String, Object>> ffList = fabricService.getList(param);
		// 统计信息的总条数
		Integer totalCount = fabricService.getTotalCount(where);

		Map<String, Object> map = new HashMap<String, Object>();
		map.put("aaData", ffList);
		// 查出来总共有多少条记录
		map.put("iTotalRecords", totalCount);
		map.put("iTotalDisplayRecords", totalCount);
		map.put("sEcho", pagingUtil.getsEcho());
		return (JSON) JSON.toJSON(map);
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月8日 上午11:47:13
	 * @version 1.0
	 * @see 删除
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/delete", method = RequestMethod.POST)
	public ApiResult delete(Integer[] id) {
		ApiResult result = new ApiResult();
		int flag = 0;
		if (id.length > 0) {
			flag = fabricService.delete(id);
		}
		if (flag > 0) {
			result.msg.status = 0;
			result.msg.desc = "删除成功！共删除" + flag + "条数据！";
		} else {
			result.msg.status = 1;
			result.msg.desc = "删除失败！";
		}
		return result;
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月8日 下午3:48:17
	 * @version 1.0
	 * @see 跳转到添加页面
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@RequestMapping(value="/toAddPage",method=RequestMethod.GET)
	public String toAddPage(Model model) {
		List<FabricFilter> ffList = fabricFilterService.findChildList();
		model.addAttribute("ffList", ffList);
		return "admin/fabric/add";
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月8日 下午4:55:09
	 * @version 1.0
	 * @see 新增面料
	 * @param
	 * @parameter
	 * @since
	 * @return
	 * @throws IOException 
	 */
	@ResponseBody
	@RequestMapping(value = "/save", method = RequestMethod.POST)
	public ApiResult save(Fabric fabric, String returnImgArray,String returnImgArray1, HttpServletRequest request) throws IOException {
		ApiResult result = new ApiResult();
		fabric.setfIsDelete(0);
		fabric.setfFocusOn(0);
		fabric.setfSales(0);
		fabric.setfCreateTime(new Date());
		if (fabric.getfSendState() == 1) {
			fabric.setfSendTime(new Date());
		}
		// 多图上传字符串分割
		String[] imgPaths = returnImgArray.split("\\|");
		String[] imgPaths1 = returnImgArray1.split("\\|");
		int flag = fabricService.insert(fabric, imgPaths,imgPaths1,request);
		if (flag == 1) {
			result.msg.status = 0;
			result.msg.desc = "添加成功！";
		} else if (flag == 0) {
			result.msg.status = 1;
			result.msg.desc = "添加失败！";
		}
		return result;
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月9日 上午8:48:49
	 * @version 1.0
	 * @see 跳转修改页面
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@RequestMapping("/toUpdatePage")
	public String toUpdate(Integer id, Model model) {
		List<FabricFilter> ffList = fabricFilterService.findChildList();
		List<FabricPic> picList = fabricPicService.getListByFid(id);
		List<FabricMorepic> morepicList = fabricPicService.getListByFMid(id);
		if (id != null) {
			Fabric fabric = fabricService.findById(id);
			model.addAttribute("fabric", fabric);
		}
		// 多图列表字符串拼接
		if (picList != null && picList.size() > 0) {
			String returnImgArray = "";
			for (FabricPic fp : picList) {
				returnImgArray += "|" + fp.getFpImg();
			}
			model.addAttribute("returnImgArray", returnImgArray);
		} else {
			model.addAttribute("returnImgArray", "");
		}
		// 多图列表字符串拼接
		if (morepicList != null && morepicList.size() > 0) {
			String returnImgArray1 = "";
			for (FabricMorepic fp : morepicList) {
				returnImgArray1 += "|" + fp.getFmpImg();
			}
				model.addAttribute("returnImgArray1", returnImgArray1);
		} else {
			model.addAttribute("returnImgArray1", "");
		}
		
		model.addAttribute("ffList", ffList);
		model.addAttribute("picList", picList);
		model.addAttribute("morepicList", morepicList);
		
		return "admin/fabric/update";
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月9日 上午10:11:48
	 * @version 1.0
	 * @see 修改
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/update", method = RequestMethod.POST)
	public ApiResult update(String returnImgArray,String returnImgArray1, Fabric fabric) {
		ApiResult result = new ApiResult();
		Fabric oldFabric = fabricService.findById(fabric.getfId());
		fabric.setfFocusOn(oldFabric.getfFocusOn());
		fabric.setfCreateTime(oldFabric.getfCreateTime());
		if (fabric.getfSendState() != oldFabric.getfSendState() && fabric.getfSendState() == 1) {
			fabric.setfSendTime(new Date());
		} else {
			fabric.setfSendTime(oldFabric.getfSendTime());
		}
		fabric.setfSales(oldFabric.getfSales());
		fabric.setfIsDelete(oldFabric.getfIsDelete());
		// 多图上传字符串分割
		String[] imgPaths = returnImgArray.split("\\|");
		String[] imgPaths1 = returnImgArray1.split("\\|");
		int flag = fabricService.update(fabric, imgPaths,imgPaths1);
		if (flag == 1) {
			result.msg.status = 0;
			result.msg.desc = "修改成功！";
		} else if (flag == 0) {
			result.msg.status = 1;
			result.msg.desc = "修改失败！";
		}
		return result;
	}

	/**
	 * 
	 * @author 作者 : 任凯伟
	 * @date 创建时间：2016年8月18日 下午3:07:21
	 * @version 1.0
	 * @see 添加时判断编号是否已存在
	 * @param
	 * @parameter
	 * @since
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "isNoExits", method = RequestMethod.POST)
	public JSON isNoExits(String param, Integer fId) {
		String info = "";
		String status = "";
		Map<String, Object> map = new HashMap<String, Object>();
		int count=0;
		if (fId == null) {
			count = fabricService.findByNo(param);
		} else {
			count = fabricService.findByNoAndId(param, fId);
		}

		if (count > 0) {
			status = "n";
			info = "编号已存在！";
		} else {
			status = "y";
		}
		map.put("status", status);
		map.put("info", info);
		return (JSON) JSON.toJSON(map);
	}
	
	/**
	 * 跳转到多图上传界面
	 * @author 张天敏
	 * @date 日期：2016年9月28日 时间：下午1:55:53
	 * @return
	 */
	@RequestMapping(value="uploadImg",method=RequestMethod.GET)
	public String uploadImg(Model model,String domId){
		model.addAttribute("domId", domId);
		return "admin/fabric/uploadImg";
	}
	
	
}
 